package ar.fiuba.tp7552.buildadmin.service;

import java.math.BigDecimal;
import java.util.Collection;
import java.util.Date;

import ar.fiuba.tp7552.buildadmin.model.BusinessException;
import ar.fiuba.tp7552.buildadmin.model.builds.Edificio;
import ar.fiuba.tp7552.buildadmin.model.builds.Propiedad;
import ar.fiuba.tp7552.buildadmin.model.builds.Responsable;
import ar.fiuba.tp7552.buildadmin.model.expensas.TipoExpensa;
import ar.fiuba.tp7552.buildadmin.model.planes.CobroPlan;
import ar.fiuba.tp7552.buildadmin.model.planes.Plan;
import ar.fiuba.tp7552.buildadmin.webactions.expensas.DetalleCobro;

public interface PlanService {

	public Collection<Plan> getAll();

	public Plan get(Long id);

	public Plan createPlan(Responsable responsable, Collection<Propiedad> propiedades, Date fecha, BigDecimal monto, TipoExpensa tipoExpensa, int cuotas) throws BusinessException;
		
	public void update(Plan entity);

	void delete(Plan plan);

	void liquidar(Edificio edificio);
	
	DetalleCobro detalleCobro(Plan plan, Date fechaCobro) throws BusinessException;
	
	CobroPlan registrarCobro(Plan plan, Date fechaCobro, BigDecimal monto, String comprobante) throws BusinessException;
	
	void revertirCobro(CobroPlan cobro);
	
	void consolidar(CobroPlan cobro, String comprobante);
	
}
